package cn.infrabase.http;

import lombok.AccessLevel;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;

/**
 * 网址协议。
 *
 * @author Weimin Gao
 * @since 1.0.0
 **/
@Builder
@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
public class UrlProtocol {

    /**
     * 网址HTTP协议默认端口。
     */
    public static final int HTTP_PORT = 80;

    /**
     * 网址HTTPS协议默认端口。
     */
    public static final int HTTPS_PORT = 443;

    /**
     * 网址协议名称，如http、https等。
     */
    private String name;

    /**
     * 网址协议版本，如：1.1。
     */
    private String version;

    /**
     * 返回网址协议名称，如http、https等。
     *
     * @return 网址协议名称。
     */
    public String name() {
        return name;
    }

    /**
     * 返回网址协议版本，如：1.1。
     *
     * @return 网址协议版本。
     */
    public String version() {
        return version;
    }

    @Override
    public String toString() {
        return name() + "/" + version();
    }

    /**
     * 返回真表示是超文本传输协议。
     *
     * @return 真表示是超文本传输协议。
     */
    public boolean isHttp() {
        return "http".equals(name);
    }

    /**
     * 返回真表示是基于安全套接层的超文本传输协议。
     *
     * @return 真表示是基于安全套接层的超文本传输协议。
     */
    public boolean isHttps() {
        return "https".equals(name);
    }
}
